package easy;
/**
 * 给你一个整数数组 nums ，该数组具有以下属性：
 * nums.length == 2 * n.
 * nums 包含 n + 1 个 不同的 元素
 * nums 中恰有一个元素重复 n 次
 * 找出并返回重复了 n 次的那个元素。
 * <p>
 * 示例 1：
 * <p>
 * 输入：nums = [1,2,3,3]
 * 输出：3
 * 示例 2：
 * <p>
 * 输入：nums = [2,1,2,5,3,2]
 * 输出：2
 * 示例 3：
 * <p>
 * 输入：nums = [5,1,5,2,5,3,5,4]
 * 输出：5
 */

import java.util.HashMap;
import java.util.HashSet;

public class test25 {
    public static void main(String[] args) {
        int[] nums = new int[]{2, 1, 2, 5, 3, 2};
        System.out.println(new test25().repeatedNTimes(nums));
    }

    //只有一个数字会重复
    public int repeatedNTimes(int[] nums) {
        HashSet<Integer> hashSet = new HashSet<>();
        for (int num : nums) {
            if (!hashSet.add(num)) return num;
        }
        return -1;

    }

    //理解错了，以为其他数字也会重复。
    public int repeatedNTimes2(int[] nums) {
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        for (int num : nums) {
            if (hashMap.containsKey(num)) {
                hashMap.put(num, hashMap.get(num) + 1);
            } else {
                hashMap.put(num, 1);
            }

        }
        int a = nums.length / 2;
        for (Integer i : hashMap.keySet()) {
            if (hashMap.get(i) == a) return i;
        }
        return -1;
    }
}
